/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.list;

import base.function.CBooleanFunction;
import base.value.CValue;

public class CContains extends CBooleanFunction {
	@Override
	public void Init() {
		AssertParam( 2 );
	}
	
	
	
	@Override
	public boolean ToBoolean() {
		CValue Value0 = Param[ 0 ].GetValue();
		CValue Value1 = Param[ 1 ].GetValue();
		switch( Value0.GetType() ) {
			case UserObject:
				if ( Value0.ToObject().Children.contains( Value1.ToObject() ) ) return true;
				break;
			case Array:
				for( CValue Value : Value0.ToArray() ) if( Value.IdenticalTo( Value1 ) ) return true;
				break;
			case List:
				for( CValue Value : Value0.ToList() ) if( Value.IdenticalTo( Value1 ) ) return true;
				break;
			default:
				Error( "Параметр должен быть строкой, массивом или объектом" );
				break;
		}				
		return false;
	}
}